The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the inventors hereof, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
The present disclosure relates generally to data decoding, and more particularly to soft output Viterbi algorithms (SOYA). Consider a system that can be represented by a finite state machine. For example, a finite state machine can be used to model an inter-symbol-interference (ISI) channel or a convolutional code encoder. A trellis diagram can be used to represent the sequence of all possible paths (i.e., sequences of states) that the system can visit over time. If the system can transition from state A at time t to state B at time t+1, then these states are connected by a branch. Each branch may be labeled by an X/Y pair, where X denotes the input that causes the system to transition from state A to B and Y represents an output corresponding to this transition. For example, a channel with a two-bit channel response can be represented by a four-state trellis diagram. The states of this trellis can be labeled as 00, 01, 10, 11 and may be associated with the latest two bits transmitted through the channel. For example, if the system is at state 01 at time t, and 0 is transmitted, then the next state at time t+1 would be 10. Similarly, the system would transition to state 11 if 1 were transmitted. Channel output Y that results from these transitions is a real number m, that may be different for each branch. The signals at the output of the channel are detected by a trellis-based detector, such as a Viterbi (maximum-likelihood) detector, which is based on the trellis representing the channel.
However, a Viterbi detector does not receive the particular path that occurred in the trellis of the channel. Rather, the Viterbi detector uses the signals/bits it receives to find the trellis path that most-likely occurred based on the received signals/bits. This detection is often complicated by the presence of noise or errors in the received signals or bits. In some situations, the trellis path that most-likely occurred based on the received signals or bits may not be the same as the trellis path that actually occurred in the channel.